home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 1.iso / DEMON / RISCOS2 / TCP_131S.ARC / c / driver < prev    next >
Text File  |  1993-03-12  |  2KB  |  84 lines

  1. /*                  _____________________________________________
  2.                   [>                                             <]
  3. Project           [> ARCterm VII                                 <]
  4. Author            [> Hugo Fiennes                                <]
  5. Date started      [> 05-March-1990                               <]
  6.                   [>                                             <]
  7. Module name       [> Driver loading                              <]
  8. Current version   [> 00.03                                       <]
  9. Version date      [> 24-November-1992                            <]
  10. State             [> Unfinished                                  <]
  11.                   [>                                             <]
  12.                   [>    This source is COPYRIGHT © 1992 by       <]
  13.                   [>      Hugo Fiennes of The Serial Port        <]
  14.                   [>_____________________________________________<]
  15. */
  16.  
  17. #include <stdio.h>
  18. #include <stdlib.h>
  19.  
  20. int  *driver_speedtable,driver_flags,driver_version,driver_noofspeeds;
  21. char *driver_info,*driver_creator;
  22.  
  23. void *driver_load(char *driver)
  24.   {
  25.   FILE *drv; long len; char fname[80]; int *driver_block;
  26.  
  27.   /* Make driver filename */
  28.   sprintf(fname,"SerialDev:Modules.%s.Driver",driver);
  29.  
  30.   if ((drv=fopen(fname,"rb"))==NULL) return(NULL);
  31.   fseek(drv,0,SEEK_END);
  32.   len=ftell(drv);
  33.   fseek(drv,0,SEEK_SET);
  34.  
  35.   if ((driver_block=malloc(len))==NULL)
  36.     {
  37.     /* Can't get space for driver */
  38.     fclose(drv);
  39.     return(0);
  40.     }
  41.  
  42.   /* Load driver */
  43.   fread(driver_block,1,len,drv);
  44.   fclose(drv);
  45.  
  46.   driver_flags=driver_block[49];
  47.   driver_version=driver_block[48];
  48.   driver_speedtable=&driver_block[64];
  49.   driver_info=(char*)&driver_block[32];
  50.   driver_creator=(char*)&driver_block[40];
  51.  
  52.   driver_noofspeeds=0;
  53.   while(driver_speedtable[driver_noofspeeds++]);
  54.   driver_noofspeeds--;
  55.  
  56.   return(driver_block);
  57.   }
  58.  
  59. void *pipe_load(char *name)
  60. {
  61.   FILE *drv; long len; char fname[80];
  62.   int *terminal_block;
  63.  
  64.   /* Make driver filename */
  65.   sprintf(fname,"SerialDev:Modules.%s.Driver", name);
  66.  
  67.   if ((drv=fopen(fname,"rb"))==NULL) return(NULL);
  68.   fseek(drv,0,SEEK_END);
  69.   len=ftell(drv);
  70.   fseek(drv,0,SEEK_SET);
  71.  
  72.   if ((terminal_block=malloc(len))==NULL)
  73.   {
  74.     /* Can't get space for driver */
  75.     fclose(drv);
  76.     return(0);
  77.   }
  78.  
  79.   /* Load driver */
  80.   fread(terminal_block,1,len,drv);
  81.   fclose(drv);
  82.   return(terminal_block);
  83. }
  84.